package com.heima.article.feign;

import com.heima.common.dtos.PageResponseResult;
import com.heima.common.dtos.ResponseResult;
import com.heima.model.article.dtos.ArticleBehaviorDto;
import com.heima.model.article.dtos.ArticleDto;
import com.heima.model.article.pojos.ApArticle;
import com.heima.model.wemedia.dtos.WmCommentApplyDto;
import com.heima.model.wemedia.dtos.WmCommentStatusDto;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;

import java.util.List;
import java.util.Map;

/**
 * App文章
 */
@FeignClient("leadnews-article")
public interface ApArticleFeign {

    /**
     * 新增或修改文章
     */
    @PostMapping("/api/v1/article/saveApArticle")
    public ResponseResult<Long> saveApArticle(@RequestBody ArticleDto dto);

    /**
     * 查询所有App文章
     */
    @GetMapping("/api/v1/article/findAll")
    public ResponseResult<List<ApArticle>> findAll();

    /**
     * 根据id查询文章
     */
    @GetMapping("/api/v1/article/findArticleById")
    public ResponseResult<ApArticle> findArticleById(@RequestBody Long id);

    /**
     * 根据用户id,起止时间查询点赞数量，图文发布数量，收藏数量
     * @param dto
     * @return
     */
    @PostMapping("/api/v1/article/findArticleByUserId")
    public ResponseResult<Map<String,Integer>> findArticleNumByUserId(@RequestBody ArticleBehaviorDto dto);

    /**
     * 根据用户id,起止时间查询文章详情
     * @param dto
     * @return
     */
    @PostMapping("/api/v1/article/findByUserIdAndTime")
    public PageResponseResult findByUserIdAndTime(@RequestBody ArticleBehaviorDto dto);

    /**
     * 根据作者id 查询文章列表
     * @param uid
     * @return
     */
    @GetMapping("/api/v1/article/findArticleByUserId/{uid}")
    public ResponseResult<List<ApArticle>>  findArticleByUserId(@PathVariable("uid") Long uid);


    /**
     * 根据分页对象 查询文章聚合
     */
    @PostMapping("/api/v1/article/findArticleByUserId/Page")
    public PageResponseResult findArticlePage(@RequestBody WmCommentApplyDto dto);


    /**
     * 根据文章Id修改文章的可评论状态
     */
    @PostMapping("/api/v1/article/UpdateArticleConfigStatus/status")
     ResponseResult updateArticleConfigStatus(@RequestBody WmCommentStatusDto dto);

    /**
     * 查看文章是否可以评论
     * @param articleId
     * @return
     */
    @GetMapping("/api/v1/article/config/{articleId}")
    public Boolean isComment(@PathVariable Long articleId);
}
